Software-Defined networking (SDN) is a network architecture that aims at decoupling control plane functions from data plane functions such that separate apparatuses may be utilized for different functions. In the SDN architecture, network intelligence and states are logically centralized, and the underlying network infrastructure is abstracted from the applications. As a result, networking may be simplified and new applications become feasible. For example, network virtualization can be accomplished by implementing it in a software application where the control plane is separated from the data plane. Also, a network administrator of a SDN system may have programmable central control of network traffic without requiring physical access to the system's hardware devices. With these benefits, SDN architecture based systems (referred to as SDN systems or SDN networks exchangeably herein below) are gaining popularity among carriers and enterprises.
For implementing SDN, the Open Networking Foundation (ONF), an industrial consortium focusing on commercializing SDN and its underlying technologies, has defined a set of open commands, functions, and protocols. The defined protocol suites are known as the OpenFlow (OF) protocol. In the OpenFlow protocol, packets of traffic flows are forwarded through one or more flow tables in an OpenFlow switch. When there are a plurality of flow tables in an OpenFlow switch, the flow tables are sequentially numbered, starting at 0. The packets are processed through an Openflow flow table pipeline, starting at flow table 0. The processed packets at a higher numbered flow table cannot be looped back to be processed again by the same flow table or a lower numbered flow table. In addition, each flow table contains its own key composition for lookup, and the key compositions are configured a priori by a SDN controller.